// 
const express = require('express');
const app = express();
app.listen(3000, () => {
    console.log('服务器已开启');
});

// 引入
const path = require('path');
const fs = require('fs');
const formidable = require('formidable');
const svg = require('svg-captcha');
const session = require('cookie-session');

//    获取json的路径
let dir = path.join(__dirname, '/persons.json');
// 读取json的参数
let data = fs.readFileSync(dir, 'utf-8');
data = JSON.parse(data);
// console.log(data);

// 静态化页面
app.use(express.static(path.join(__dirname, 'static')));
// 接收post 提交的参数
app.use(express.urlencoded({ extended: false }));
app.use(express.json());

// session
app.use(session({ keys: ['jdudhdss'] }));


// 渲染页面
app.get('/yzm', (req, res) => {
    // // 创建验证码
    let captcha = svg.create({
        size: 4,//验证码的长度
        ignoreChars: "10oIl",//设置要忽略的字符
        noise: 5,//干扰线条数
        color: true,//文字颜色 只有true 和false
        background: '#ff0'//背景色
    });
    // 设置mime 类型为svg
    res.type('svg');

    // 获取验证码内容
    req.session.yz = captcha.text;
    // console.log(req.session.yz);

    // 把svg图响应出去 显示出来
    res.send(captcha.data);
})

app.get('/register', (req, res) => {
    res.sendFile(path.join(__dirname, '/register.html'));
})


//post提交
app.post('/register', (req, res, next) => {
    // 获取验证码参数信息
    console.log(req.session.yz);
    let haha = req.session.yz;
    console.log(haha);

    // 获取参数
    let { tel, pass, pass2, pass3 } = req.body;
    // console.log(pass3);

    //输入框不能为空
    if (!tel || !pass || !pass2 || !pass3) {
        next('输入框不能为空');
        return;
    };

    // 判断两次的密码是否一致
    if (pass != pass2) {
        next('两次输入内容不一致');
        return;
    }
    // 判断验证码输入是否正确
    console.log(haha);
    if (pass3 != haha) {
        next('验证码输入错误');
        return;
    }
    // 判断用户名是否存在
    let isregister = data.find(value => value.username == tel);

    // 判断
    if (isregister) {
        next('用户名已存在');
        return;
    }
    //else {
    // 添加 转成对应格式
    data.push({ username: tel, password: pass });
    // 写入
    fs.writeFileSync(dir, JSON.stringify(data))
    // 响应
    res.send('注册成功')
    // }

})


// 逻辑错误统一处理
app.use((err, req, res, next) => {
    res.send({ code: 400, msg: err })
})


